package NO12;

/**
 * 输入一个整数，输出该数二进制表示中1的个数。其中负数用补码表示。
 * @author swg
 *
 */
public class NumberOf1 {
	/*
	 * 第一种方式
	 */
	public static int numberOf1(int num){
		int count = 0;
		for(int i=0;i<32;i++){
			//每一位都与1进行与操作
			count += (num & 1);
			num >>>= 1;
		}
		return count;
	}
	
	/*
	 * 第二种方式
	 */
	public static int numberOf2(int num){
		int count = 0;
		while(num != 0){
			count++;
			//逐渐地将最右边的1给消除掉了，最后变成了0
			num = num & (num-1);
		}
		return count;
	}
	
	public static void main(String[] args) {
		System.out.println(numberOf1(15));
		System.out.println(numberOf2(15));
	}
}
